/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.saber.certificacao.ejbs.stateless;

import br.com.saber.certificacao.ejbs.stateless.interfaces.SaberDTOBeanLocal;
import br.com.saber.certificacao.ejbs.stateless.interfaces.VersaoBeanLocal;
import br.com.saber.certificacao.enums.Linguagem;
import br.com.saber.certificacao.modelos.Versao;
import br.com.saber.certificacao.modelos.dto.VersaoMotherDTO;
import br.com.saber.certificacao.modelos.dto.auxiliares.ContadorDTO;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 * Bean criado para gerar insumo para relatórios em geral.
 * @author gbvbahia
 */
@Stateless
public class SaberDTOBean implements SaberDTOBeanLocal {

    @PersistenceContext(name = "jdbc/saber")
    private EntityManager manager;

    @EJB
    private VersaoBeanLocal versaoBean;

    @Override
    public List<VersaoMotherDTO> buscarTodosVersaoMotherDTO(boolean status) {
        List<Versao> versoesMother = versaoBean.buscarTodasVersoesPorTipo(true);
        List<VersaoMotherDTO> toReturn = new ArrayList<VersaoMotherDTO>();
        for (Versao vMother : versoesMother) {
            VersaoMotherDTO dto = new VersaoMotherDTO(vMother.getCertificacao().getCertificacaoLabel(), vMother.getNome(), vMother.getUrlSiteOficial());
            for (Versao vFilha : versaoBean.buscarVersoesFilhasDaMother(vMother)) {
                Query q = this.manager.createNamedQuery("SaberDTOBean.buscarTodosVersaoMotherDTO");
                q.setParameter("versao", vFilha);
                q.setParameter("statusQuestao", status);
                List<ContadorDTO> list = q.getResultList();
                for(ContadorDTO contador : list){
                    int[] questoes = new int[2];
                    if(contador.getLinguagem().equals(Linguagem.INGLES)){
                        questoes[1] = contador.getValor().intValue();
                    }else{
                        questoes[0] = contador.getValor().intValue();
                    }
                    dto.addObjetivo(contador.getNome().replace("\n", "").replace("\r", ""), questoes);
                }
            }
            toReturn.add(dto);
        }
        return toReturn;
    }
}
